package com.vm.fragment;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.JsonArrayRequest;
import com.vm.activity.GoodsDetailActivity;
import com.vm.activity.WarningDialog;
import com.vm.adapter.GoodsGridAdapter;
import com.vm.adapter.GoodsTypeGridAdapter;
import com.vm.commons.VMConst;
import com.vm.model.Goods;
import com.vm.model.GoodsType;
import com.vm.utils.JsonUtils;
import com.vm.utils.SingleRequestQueue;
import com.wwt.app.R;

import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class MallFragment extends BaseFragment {
	protected static final String TAG = "PopularOnlineActivity";

	private RequestQueue mQueue;
	private View view;

	LinearLayout mall_goodstype_item;
	GridView goodsTypeGridView;
	RelativeLayout goodsTypeRelativeLayout;
	LinearLayout.LayoutParams linearParams;
	int oneHeight = 0; // 商品类型单个高度
	int wholeHeight = 0; // 商品类型总高度

	/** 标志位，标志已经初始化完成 */
	private boolean isPrepared;
	/** 是否已被加载过一次，第二次就不再去请求数据了 */
	private boolean mHasLoadedOnce;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {

		Log.i("MallFragment", "onCreateView");

		if (view == null) {
			view = inflater.inflate(R.layout.pic_mall, null);
		} else {
			// 缓存的rootView需要判断是否已经被加过parent
			// 如果有parent需要从parent删除
			ViewGroup parent = (ViewGroup) view.getParent();
			if (parent != null) {
				parent.removeView(view);
			}
		}

		isPrepared = true;
		lazyLoad();
		return view;
		
	}

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);

	}

	// @Override
	// public void onBackPressed() {
	// super.onBackPressed();
	// System.out.println("按下了back键   onBackPressed()");
	// }

//	/**
//	 * 点击改变gridview高度
//	 */
//	OnClickListener btn_Listener = new OnClickListener() {
//
//		@Override
//		public void onClick(View v) {
//
//			goodsTypeRelativeLayout = (RelativeLayout) getActivity()
//					.findViewById(R.id.rlyt_goodstype);
//			if (oneHeight == 0 && wholeHeight == 0) {
//				oneHeight = 15 + goodsTypeGridView.getHeight() / 6;
//				wholeHeight = 15 + goodsTypeGridView.getHeight();
//
//				linearParams = (LinearLayout.LayoutParams) goodsTypeRelativeLayout
//						.getLayoutParams(); // 取控件mGrid当前的布局参数
//				linearParams.height = wholeHeight;// 当控件的高强制设成75象素
//				goodsTypeRelativeLayout.setLayoutParams(linearParams); // 使设置好的布局参数应用到控件mGrid2
//			} else {
//				if (linearParams == null) {
//					linearParams = (LinearLayout.LayoutParams) goodsTypeRelativeLayout
//							.getLayoutParams(); // 取控件mGrid当前的布局参数
//				}
//				if (linearParams.height > oneHeight) {
//					linearParams.height = oneHeight;
//					goodsTypeRelativeLayout.setLayoutParams(linearParams); // 使设置好的布局参数应用到控件mGrid2
//				} else {
//					linearParams.height = wholeHeight;
//					goodsTypeRelativeLayout.setLayoutParams(linearParams); // 使设置好的布局参数应用到控件mGrid2
//				}
//			}
//
//			Log.i(TAG,
//					"linearParams.height:"
//							+ Integer.toString(linearParams.height));
//
//		}
//	};
//
//	/**
//	 * 商品监听
//	 */
//	OnItemClickListener goods_listener = new OnItemClickListener() {
//
//		@Override
//		public void onItemClick(AdapterView<?> parent, View view, int position,
//				long id) {
//
//			Intent intent = new Intent(getActivity(), GoodsDetailActivity.class);
//			TextView textView = (TextView) view.findViewById(R.id.tv_goodsName);
//			String goodsId = textView.getTag().toString();
//			intent.putExtra("goodsId", goodsId);
//			startActivityForResult(intent, 10);
//
//		}
//	};
//
//	/**
//	 * 商品类型gridview item监听
//	 */
//	OnItemClickListener gd_listener = new OnItemClickListener() {
//
//		@Override
//		public void onItemClick(AdapterView<?> parent, View view, int position,
//				long id) {
//
//			Button btn_currentType = (Button) view
//					.findViewById(R.id.btn_goodsType);
//			String typeId = btn_currentType.getTag().toString();
//			String url2 = VMConst.REQUEST_URL + "getGoodsByType?typeId="
//					+ typeId;
//			JsonArrayRequest goodsJsonArrayRequest = new JsonArrayRequest(url2,
//					new Listener<JSONArray>() {
//						@Override
//						public void onResponse(JSONArray arg0) {
//							List<Goods> list_goods = new ArrayList<Goods>();
//							JSONObject jsonObject;
//							Goods goods;
//							int count = arg0.length();
//							for (int i = 0; i < count; i++) {
//								try {
//									jsonObject = arg0.getJSONObject(i);
//									goods = JsonUtils.jsonToBean(jsonObject,
//											Goods.class);
//									list_goods.add(goods);
//
//								} catch (JSONException e) {
//									// TODO Auto-generated catch block
//									e.printStackTrace();
//								}
//							}
//
//							GoodsGridAdapter myAdapter = new GoodsGridAdapter(
//									getActivity(), list_goods);
//							GridView gridview = (GridView) getActivity()
//									.findViewById(R.id.gv_mall);
//
//							gridview.setAdapter(myAdapter);
//
//							jsonObject = null;
//							goods = null;
//							myAdapter = null;
//							list_goods = null;
//						}
//
//					}, new Response.ErrorListener() {
//						@Override
//						public void onErrorResponse(VolleyError error) {
//							Log.e(TAG, error.getMessage(), error);
//						}
//					});
//
//			mQueue.add(goodsJsonArrayRequest);
//
//		}
//	};

	@Override
	protected void lazyLoad() {

		Log.i("MallFragment", "lazyLoad");
		Log.i("lazyLoad", "isPrepared=" + isPrepared + ",isVisible="
				+ isVisible + ",mHasLoadedOnce=" + mHasLoadedOnce);
		// TODO Auto-generated method stub
		if (!isPrepared || !isVisible || mHasLoadedOnce) {
			return;
		}

		Log.i("MallFragment", "lazyLoad--AsyncTask");
		new AsyncTask<Void, Void, Boolean>() {

			@Override
			protected void onPreExecute() {
				super.onPreExecute();
				// 显示加载进度对话框
				UIHelper.showDialogForLoading(getActivity(), "正在加载...", true);
				final WarningDialog dialog=new WarningDialog(getActivity());
				dialog.show();
				dialog.setClicklistener(new WarningDialog.ClickListenerInterface() {
					
					@Override
					public void doConfirm() {
						// TODO Auto-generated method stub
						dialog.dismiss();
					}
				});
			}

			@Override
			protected Boolean doInBackground(Void... params) {
				try {
					Thread.sleep(2000);
					// 在这里添加调用接口获取数据的代码
					// doSomething()
				} catch (Exception e) {
					e.printStackTrace();
				}
				return true;
			}

			@Override
			protected void onPostExecute(Boolean isSuccess) {
				if (isSuccess) {
					// 加载成功
//					setView();
					mHasLoadedOnce = true;
				} else {
					// 加载失败
				}
				// 关闭对话框
				UIHelper.hideDialogForLoading();
			}
		}.execute();
	}

//	public void setView() {
//		Log.i("MallFragment", "onActivityCreated");
//
//		mQueue = SingleRequestQueue.getRequestQueue(getActivity());
//
//		String url = VMConst.REQUEST_URL + "getAllGoodsType";
//		JsonArrayRequest goodsTypeArrayRequest = new JsonArrayRequest(url,
//				new Listener<JSONArray>() {
//					@Override
//					public void onResponse(JSONArray arg0) {
//						List<GoodsType> list_goodsType = new ArrayList<GoodsType>();
//						JSONObject jsonObject;
//						GoodsType goodsType;
//						int count = arg0.length();
//						for (int i = 0; i < count; i++) {
//							try {
//								jsonObject = arg0.getJSONObject(i);
//								goodsType = JsonUtils.jsonToBean(jsonObject,
//										GoodsType.class);
//								list_goodsType.add(goodsType);
//
//							} catch (JSONException e) {
//								// TODO Auto-generated catch block
//								e.printStackTrace();
//							}
//						}
//
//						// 传递参数,方便adapter中获取gridview
//						GridView goodsGridView = (GridView) view
//								.findViewById(R.id.gv_mall);
//						goodsTypeGridView = (GridView) view
//								.findViewById(R.id.mgv_category_gridview);
//
//						GoodsTypeGridAdapter myAdapter = new GoodsTypeGridAdapter(
//								getActivity(), list_goodsType, goodsGridView);
//
//						// goodsTypeGridView.setOnItemClickListener(gd_listener);
//						goodsTypeGridView.setAdapter(myAdapter);
//
//						jsonObject = null;
//						goodsType = null;
//						myAdapter = null;
//						list_goodsType = null;
//
//					}
//
//				}, new Response.ErrorListener() {
//					@Override
//					public void onErrorResponse(VolleyError error) {
//						Log.e(TAG, error.getMessage(), error);
//					}
//				});
//
//		mQueue.add(goodsTypeArrayRequest);
//		goodsTypeArrayRequest = null;
//
//		String url2 = VMConst.REQUEST_URL + "getGoodsByType?typeId=2";
//		JsonArrayRequest goodsJsonArrayRequest = new JsonArrayRequest(url2,
//				new Listener<JSONArray>() {
//					@Override
//					public void onResponse(JSONArray arg0) {
//						List<Goods> list_goods = new ArrayList<Goods>();
//						JSONObject jsonObject;
//						Goods goods;
//						int count = arg0.length();
//						for (int i = 0; i < count; i++) {
//							try {
//								jsonObject = arg0.getJSONObject(i);
//								goods = JsonUtils.jsonToBean(jsonObject,
//										Goods.class);
//								list_goods.add(goods);
//
//							} catch (JSONException e) {
//								// TODO Auto-generated catch block
//								e.printStackTrace();
//							}
//						}
//
//						GoodsGridAdapter myAdapter = new GoodsGridAdapter(
//								getActivity(), list_goods);
//						GridView gridview = (GridView) view
//								.findViewById(R.id.gv_mall);
//
//						gridview.setAdapter(myAdapter);
//
//						jsonObject = null;
//						goods = null;
//						myAdapter = null;
//						list_goods = null;
//
//					}
//
//				}, new Response.ErrorListener() {
//					@Override
//					public void onErrorResponse(VolleyError error) {
//						Log.e(TAG, error.getMessage(), error);
//					}
//				});
//
//		mQueue.add(goodsJsonArrayRequest);
//		goodsJsonArrayRequest = null;
//
//		ImageButton ibtn_push = (ImageButton) view.findViewById(R.id.ibtn_push);
//		ibtn_push.setOnClickListener(btn_Listener);
//	}

}
